using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using database;
using objetos;

namespace dados
{
	#region TB_NF_PARAMETRO
	/// <summary>
	/// This object represents the properties and methods of a TB_NF_PARAMETRO.
	/// </summary>
	public class DAL_TB_NF_PARAMETRO
	{		
	
		/// <summary>
		/// Incluir via aplicacao
		/// </summary>	
		public int Incluir(OBJ_TB_NF_PARAMETRO obj)
		{
			try
			{
				DAO_DATABASE db = new DAO_DATABASE();
				DataSet ds = new DataSet();
				List<string> lista = new List<string>();		
	
				db.CreateParameter("@id_empresa", SqlDbType.Int, obj.id_empresa);				
				lista.Add("@id_empresa");
                db.CreateParameter("@id_uf", SqlDbType.Int, obj.id_uf);
                lista.Add("@id_uf");		
				db.CreateParameter("@id_processo_emissao", SqlDbType.Int, obj.id_processo_emissao);				
				lista.Add("@id_processo_emissao");				
				db.CreateParameter("@id_versao", SqlDbType.Int, obj.id_versao);				
				lista.Add("@id_versao");				
				db.CreateParameter("@id_tipo_emissao", SqlDbType.Int, obj.id_tipo_emissao);				
				lista.Add("@id_tipo_emissao");				
				db.CreateParameter("@id_tipo_ambiente", SqlDbType.Int, obj.id_tipo_ambiente);				
				lista.Add("@id_tipo_ambiente");				
				db.CreateParameter("@id_forma_impressao", SqlDbType.Int, obj.id_forma_impressao);				
				lista.Add("@id_forma_impressao");				
				db.CreateParameter("@desc_justificativa", SqlDbType.VarChar, obj.desc_justificativa);				
				lista.Add("@desc_justificativa");				
				db.CreateParameter("@licenca", SqlDbType.VarChar, obj.licenca);				
				lista.Add("@licenca");				
				db.CreateParameter("@nome_certificado", SqlDbType.VarChar, obj.nome_certificado);				
				lista.Add("@nome_certificado");				
				db.CreateParameter("@senha_certificado", SqlDbType.VarChar, obj.senha_certificado);				
				lista.Add("@senha_certificado");				
				db.CreateParameter("@sit_usa_proxy", SqlDbType.Bit, obj.sit_usa_proxy);				
				lista.Add("@sit_usa_proxy");				
				db.CreateParameter("@usuario_proxy", SqlDbType.VarChar, obj.usuario_proxy);				
				lista.Add("@usuario_proxy");				
				db.CreateParameter("@senha_proxy", SqlDbType.VarChar, obj.senha_proxy);				
				lista.Add("@senha_proxy");				
				db.CreateParameter("@dominio_proxy", SqlDbType.VarChar, obj.dominio_proxy);				
				lista.Add("@dominio_proxy");				
				db.CreateParameter("@url_proxy", SqlDbType.VarChar, obj.url_proxy);				
				lista.Add("@url_proxy");				
				db.CreateParameter("@diretorio_certificado", SqlDbType.VarChar, obj.diretorio_certificado);				
				lista.Add("@diretorio_certificado");				
				db.CreateParameter("@diretorio_entrada", SqlDbType.VarChar, obj.diretorio_entrada);				
				lista.Add("@diretorio_entrada");				
				db.CreateParameter("@diretorio_saida", SqlDbType.VarChar, obj.diretorio_saida);				
				lista.Add("@diretorio_saida");				
				db.CreateParameter("@diretorio_assinada", SqlDbType.VarChar, obj.diretorio_assinada);				
				lista.Add("@diretorio_assinada");				
				db.CreateParameter("@diretorio_validada", SqlDbType.VarChar, obj.diretorio_validada);				
				lista.Add("@diretorio_validada");				
				db.CreateParameter("@diretorio_rejeitada", SqlDbType.VarChar, obj.diretorio_rejeitada);				
				lista.Add("@diretorio_rejeitada");				
				db.CreateParameter("@diretorio_aprovada", SqlDbType.VarChar, obj.diretorio_aprovada);				
				lista.Add("@diretorio_aprovada");				
				db.CreateParameter("@diretorio_denegada", SqlDbType.VarChar, obj.diretorio_denegada);				
				lista.Add("@diretorio_denegada");				
				db.CreateParameter("@diretorio_reprovada", SqlDbType.VarChar, obj.diretorio_reprovada);				
				lista.Add("@diretorio_reprovada");				
				db.CreateParameter("@diretorio_consultada", SqlDbType.VarChar, obj.diretorio_consultada);				
				lista.Add("@diretorio_consultada");				
				db.CreateParameter("@diretorio_inutilizada", SqlDbType.VarChar, obj.diretorio_inutilizada);				
				lista.Add("@diretorio_inutilizada");				
				db.CreateParameter("@diretorio_temporario", SqlDbType.VarChar, obj.diretorio_temporario);				
				lista.Add("@diretorio_temporario");				
				db.CreateParameter("@diretorio_impressao", SqlDbType.VarChar, obj.diretorio_impressao);				
				lista.Add("@diretorio_impressao");
                db.CreateParameter("@diretorio_processando", SqlDbType.VarChar, obj.diretorio_processando);
                lista.Add("@diretorio_processando");
                db.CreateParameter("@diretorio_cancelada", SqlDbType.VarChar, obj.diretorio_cancelada);
                lista.Add("@diretorio_cancelada");				
				db.CreateParameter("@sit_ativo", SqlDbType.Bit, obj.sit_ativo);				
				lista.Add("@sit_ativo");				
	
				string query = String.Format("Insert Into tb_nf_parametro ({0}) Values ({1}); SELECT SCOPE_IDENTITY()",  string.Join(",",lista.ToArray()).ToString().Replace("@", ""), string.Join(",",lista.ToArray()).ToString());
				ds = db.ExecuteQuery(query);
				
				return Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString());
			}
			catch (Exception)
       		{
            	throw;
        	}
		}
		
		/// <summary>
		/// Update via aplicacao
		/// </summary>			
		public void Alterar(OBJ_TB_NF_PARAMETRO obj)
		{
			try
			{
				DAO_DATABASE db = new DAO_DATABASE();
				List<string> lista = new List<string>();
	
				db.CreateParameter("@id", SqlDbType.Int, obj.id);
				
	
				db.CreateParameter("@id_empresa", SqlDbType.Int, obj.id_empresa);
				lista.Add("id_empresa = @id_empresa");
                db.CreateParameter("@id_uf", SqlDbType.Int, obj.id_uf);
                lista.Add("id_uf = @id_uf");
				db.CreateParameter("@id_processo_emissao", SqlDbType.Int, obj.id_processo_emissao);
				lista.Add("id_processo_emissao = @id_processo_emissao");
				db.CreateParameter("@id_versao", SqlDbType.Int, obj.id_versao);
				lista.Add("id_versao = @id_versao");
				db.CreateParameter("@id_tipo_emissao", SqlDbType.Int, obj.id_tipo_emissao);
				lista.Add("id_tipo_emissao = @id_tipo_emissao");
				db.CreateParameter("@id_tipo_ambiente", SqlDbType.Int, obj.id_tipo_ambiente);
				lista.Add("id_tipo_ambiente = @id_tipo_ambiente");
				db.CreateParameter("@id_forma_impressao", SqlDbType.Int, obj.id_forma_impressao);
				lista.Add("id_forma_impressao = @id_forma_impressao");
				db.CreateParameter("@desc_justificativa", SqlDbType.VarChar, obj.desc_justificativa);
				lista.Add("desc_justificativa = @desc_justificativa");
				db.CreateParameter("@licenca", SqlDbType.VarChar, obj.licenca);
				lista.Add("licenca = @licenca");
				db.CreateParameter("@nome_certificado", SqlDbType.VarChar, obj.nome_certificado);
				lista.Add("nome_certificado = @nome_certificado");
				db.CreateParameter("@senha_certificado", SqlDbType.VarChar, obj.senha_certificado);
				lista.Add("senha_certificado = @senha_certificado");
				db.CreateParameter("@sit_usa_proxy", SqlDbType.Bit, obj.sit_usa_proxy);
				lista.Add("sit_usa_proxy = @sit_usa_proxy");
				db.CreateParameter("@usuario_proxy", SqlDbType.VarChar, obj.usuario_proxy);
				lista.Add("usuario_proxy = @usuario_proxy");
				db.CreateParameter("@senha_proxy", SqlDbType.VarChar, obj.senha_proxy);
				lista.Add("senha_proxy = @senha_proxy");
				db.CreateParameter("@dominio_proxy", SqlDbType.VarChar, obj.dominio_proxy);
				lista.Add("dominio_proxy = @dominio_proxy");
				db.CreateParameter("@url_proxy", SqlDbType.VarChar, obj.url_proxy);
				lista.Add("url_proxy = @url_proxy");
				db.CreateParameter("@diretorio_certificado", SqlDbType.VarChar, obj.diretorio_certificado);
				lista.Add("diretorio_certificado = @diretorio_certificado");
				db.CreateParameter("@diretorio_entrada", SqlDbType.VarChar, obj.diretorio_entrada);
				lista.Add("diretorio_entrada = @diretorio_entrada");
				db.CreateParameter("@diretorio_saida", SqlDbType.VarChar, obj.diretorio_saida);
				lista.Add("diretorio_saida = @diretorio_saida");
				db.CreateParameter("@diretorio_assinada", SqlDbType.VarChar, obj.diretorio_assinada);
				lista.Add("diretorio_assinada = @diretorio_assinada");
				db.CreateParameter("@diretorio_validada", SqlDbType.VarChar, obj.diretorio_validada);
				lista.Add("diretorio_validada = @diretorio_validada");
				db.CreateParameter("@diretorio_rejeitada", SqlDbType.VarChar, obj.diretorio_rejeitada);
				lista.Add("diretorio_rejeitada = @diretorio_rejeitada");
				db.CreateParameter("@diretorio_aprovada", SqlDbType.VarChar, obj.diretorio_aprovada);
				lista.Add("diretorio_aprovada = @diretorio_aprovada");
				db.CreateParameter("@diretorio_denegada", SqlDbType.VarChar, obj.diretorio_denegada);
				lista.Add("diretorio_denegada = @diretorio_denegada");
				db.CreateParameter("@diretorio_reprovada", SqlDbType.VarChar, obj.diretorio_reprovada);
				lista.Add("diretorio_reprovada = @diretorio_reprovada");
				db.CreateParameter("@diretorio_consultada", SqlDbType.VarChar, obj.diretorio_consultada);
				lista.Add("diretorio_consultada = @diretorio_consultada");
				db.CreateParameter("@diretorio_inutilizada", SqlDbType.VarChar, obj.diretorio_inutilizada);
				lista.Add("diretorio_inutilizada = @diretorio_inutilizada");
				db.CreateParameter("@diretorio_temporario", SqlDbType.VarChar, obj.diretorio_temporario);
				lista.Add("diretorio_temporario = @diretorio_temporario");
				db.CreateParameter("@diretorio_impressao", SqlDbType.VarChar, obj.diretorio_impressao);
				lista.Add("diretorio_impressao = @diretorio_impressao");
                db.CreateParameter("@diretorio_processando", SqlDbType.VarChar, obj.diretorio_processando);
                lista.Add("diretorio_processando = @diretorio_processando");
                db.CreateParameter("@diretorio_cancelada", SqlDbType.VarChar, obj.diretorio_cancelada);
                lista.Add("diretorio_cancelada = @diretorio_cancelada");
                
				db.CreateParameter("@sit_ativo", SqlDbType.Bit, obj.sit_ativo);
				lista.Add("sit_ativo = @sit_ativo");
	
				string query = String.Format("Update TB_NF_PARAMETRO Set {0} Where id = @id", string.Join(",",lista.ToArray()).ToString());
				db.ExecuteQuery(query);
			}
			catch (Exception)
       		{
            	throw;
        	}
		}	
		
		/// <summary>
		/// Delete viaaplicacao
		/// </summary>	
		public void Excluir(OBJ_TB_NF_PARAMETRO obj)
		{
			try
			{
				DAO_DATABASE db = new DAO_DATABASE();
				StringBuilder queryParameters = new StringBuilder();
				db.CreateParameter("@id", SqlDbType.Int, obj.id);
		
				string query = "Delete tb_nf_parametro Where id = @id";			
				db.ExecuteQuery(query);
			}
			catch (Exception)
       		{
            	throw;
        	}
		}
	
	
		/// <summary>
		/// Lista objeto
		/// </summary>						
		public List<OBJ_TB_NF_PARAMETRO> SelecionarLista()
    	{
        	try
        	{
				DAO_DATABASE db = new DAO_DATABASE();
				List<OBJ_TB_NF_PARAMETRO> lista = new List<OBJ_TB_NF_PARAMETRO>();
				OBJ_TB_NF_PARAMETRO obj = null;
				DataTable dt = new DataTable();
				DataSet ds = new DataSet();
				StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT     tb_nf_parametro.id, tb_nf_parametro.id_empresa, tb_nf_parametro.id_uf, tb_nf_parametro.id_processo_emissao, tb_nf_parametro.id_versao, tb_nf_parametro.id_tipo_emissao,  ");
                sb.Append("           tb_nf_parametro.id_tipo_ambiente, tb_nf_parametro.id_forma_impressao, tb_nf_parametro.desc_justificativa, tb_nf_parametro.licenca, ");
                sb.Append(" tb_nf_parametro.nome_certificado, tb_nf_parametro.senha_certificado, tb_nf_parametro.sit_usa_proxy, tb_nf_parametro.usuario_proxy, ");
                sb.Append(" tb_nf_parametro.senha_proxy, tb_nf_parametro.dominio_proxy, tb_nf_parametro.url_proxy, tb_nf_parametro.diretorio_certificado, tb_nf_parametro.diretorio_entrada, ");
                sb.Append(" tb_nf_parametro.diretorio_saida, tb_nf_parametro.diretorio_assinada, tb_nf_parametro.diretorio_validada, tb_nf_parametro.diretorio_rejeitada, ");
                sb.Append(" tb_nf_parametro.diretorio_aprovada, tb_nf_parametro.diretorio_denegada, tb_nf_parametro.diretorio_reprovada, tb_nf_parametro.diretorio_consultada, ");
                sb.Append(" tb_nf_parametro.diretorio_temporario, tb_nf_parametro.diretorio_inutilizada, tb_nf_parametro.diretorio_processando, tb_nf_parametro.diretorio_impressao, tb_nf_parametro.diretorio_cancelada,  ");
                sb.Append(" tb_nf_parametro.sit_ativo, tb_empresa.nome, tb_nf_versao.desc_versao, tb_nf_processo_emissao.desc_processo_emissao,  ");
                sb.Append(" tb_nf_forma_impressao.desc_forma_impressao, tb_nf_ambiente.desc_ambiente, tb_nf_tipo_emissao.desc_tipo_emissao ");
                sb.Append(" FROM         tb_nf_parametro INNER JOIN ");
                sb.Append("           tb_empresa ON tb_nf_parametro.id_empresa = tb_empresa.id INNER JOIN ");
                sb.Append(" tb_nf_processo_emissao ON tb_nf_parametro.id_processo_emissao = tb_nf_processo_emissao.id INNER JOIN ");
                sb.Append(" tb_nf_versao ON tb_nf_parametro.id_versao = tb_nf_versao.id INNER JOIN ");
                sb.Append(" tb_nf_forma_impressao ON tb_nf_parametro.id_forma_impressao = tb_nf_forma_impressao.id INNER JOIN ");
                sb.Append(" tb_nf_ambiente ON tb_nf_parametro.id_tipo_ambiente = tb_nf_ambiente.id INNER JOIN ");
                sb.Append(" tb_nf_tipo_emissao ON tb_nf_parametro.id_tipo_emissao = tb_nf_tipo_emissao.id ");

        
	            ds = db.ExecuteQuery(sb.ToString());
				
				if(!db.DataSetIsEmpty(ds))
				{
					dt = ds.Tables[0];
					
					foreach (DataRow dr in dt.Rows)
					{											
						obj = new OBJ_TB_NF_PARAMETRO();
						Set(obj,dr);
						lista.Add(obj);
		
					}
				}
				return lista;
        	}
        	catch (Exception)
       		{
            	throw;
        	}

    	}
		
		/// <summary>
		/// Set Objeto
		/// </summary>	
		private void Set(OBJ_TB_NF_PARAMETRO obj,DataRow dr)
		{
			obj.id = Convert.ToInt32(dr["id"]);						
			obj.id_empresa = Convert.ToInt32(dr["id_empresa"].ToString()) ;
            obj.id_uf = Convert.ToInt32(dr["id_uf"].ToString());	
			obj.id_processo_emissao = Convert.ToInt32(dr["id_processo_emissao"].ToString()) ;	
			obj.id_versao = Convert.ToInt32(dr["id_versao"].ToString()) ;	
			obj.id_tipo_emissao = Convert.ToInt32(dr["id_tipo_emissao"].ToString()) ;	
			obj.id_tipo_ambiente = Convert.ToInt32(dr["id_tipo_ambiente"].ToString()) ;	
			obj.id_forma_impressao = Convert.ToInt32(dr["id_forma_impressao"].ToString()) ;	
			obj.desc_justificativa = dr["desc_justificativa"] == DBNull.Value ?  string.Empty : dr["desc_justificativa"].ToString() ;
			obj.licenca = dr["licenca"] == DBNull.Value ?  string.Empty : dr["licenca"].ToString() ;
			obj.nome_certificado = dr["nome_certificado"] == DBNull.Value ?  string.Empty : dr["nome_certificado"].ToString() ;
			obj.senha_certificado = dr["senha_certificado"] == DBNull.Value ?  string.Empty : dr["senha_certificado"].ToString() ;
			obj.sit_usa_proxy = Convert.ToBoolean(dr["sit_usa_proxy"].ToString()) ;
			obj.usuario_proxy = dr["usuario_proxy"] == DBNull.Value ?  string.Empty : dr["usuario_proxy"].ToString() ;
			obj.senha_proxy = dr["senha_proxy"] == DBNull.Value ?  string.Empty : dr["senha_proxy"].ToString() ;
			obj.dominio_proxy = dr["dominio_proxy"] == DBNull.Value ?  string.Empty : dr["dominio_proxy"].ToString() ;
			obj.url_proxy = dr["url_proxy"] == DBNull.Value ?  string.Empty : dr["url_proxy"].ToString() ;
			obj.diretorio_certificado = dr["diretorio_certificado"] == DBNull.Value ?  string.Empty : dr["diretorio_certificado"].ToString() ;
			obj.diretorio_entrada = dr["diretorio_entrada"] == DBNull.Value ?  string.Empty : dr["diretorio_entrada"].ToString() ;
			obj.diretorio_saida = dr["diretorio_saida"] == DBNull.Value ?  string.Empty : dr["diretorio_saida"].ToString() ;
			obj.diretorio_assinada = dr["diretorio_assinada"] == DBNull.Value ?  string.Empty : dr["diretorio_assinada"].ToString() ;
			obj.diretorio_validada = dr["diretorio_validada"] == DBNull.Value ?  string.Empty : dr["diretorio_validada"].ToString() ;
			obj.diretorio_rejeitada = dr["diretorio_rejeitada"] == DBNull.Value ?  string.Empty : dr["diretorio_rejeitada"].ToString() ;
			obj.diretorio_aprovada = dr["diretorio_aprovada"] == DBNull.Value ?  string.Empty : dr["diretorio_aprovada"].ToString() ;
			obj.diretorio_denegada = dr["diretorio_denegada"] == DBNull.Value ?  string.Empty : dr["diretorio_denegada"].ToString() ;
			obj.diretorio_reprovada = dr["diretorio_reprovada"] == DBNull.Value ?  string.Empty : dr["diretorio_reprovada"].ToString() ;
			obj.diretorio_consultada = dr["diretorio_consultada"] == DBNull.Value ?  string.Empty : dr["diretorio_consultada"].ToString() ;
			obj.diretorio_inutilizada = dr["diretorio_inutilizada"] == DBNull.Value ?  string.Empty : dr["diretorio_inutilizada"].ToString() ;
			obj.diretorio_temporario = dr["diretorio_temporario"] == DBNull.Value ?  string.Empty : dr["diretorio_temporario"].ToString() ;
			obj.diretorio_impressao = dr["diretorio_impressao"] == DBNull.Value ?  string.Empty : dr["diretorio_impressao"].ToString() ;
            obj.diretorio_cancelada = dr["diretorio_cancelada"] == DBNull.Value ? string.Empty : dr["diretorio_cancelada"].ToString();
            obj.diretorio_cancelada = dr["diretorio_processando"] == DBNull.Value ? string.Empty : dr["diretorio_processando"].ToString();
			obj.sit_ativo = Convert.ToBoolean(dr["sit_ativo"].ToString()) ;
			
		}						
				
		/// <summary>
		/// Selecionar Objeto Por ID
		/// </summary>	
		public OBJ_TB_NF_PARAMETRO SelecionarObjetoPorId(int id)
		{
			try
			{
				DAO_DATABASE db = new DAO_DATABASE();
				OBJ_TB_NF_PARAMETRO obj = new OBJ_TB_NF_PARAMETRO();
				DataSet ds = new DataSet();				
				DataTable dt = new DataTable();
				
				db.CreateParameter("@id", SqlDbType.Int, id);
				StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT     tb_nf_parametro.id, tb_nf_parametro.id_empresa, tb_nf_parametro.id_uf, tb_nf_parametro.id_processo_emissao, tb_nf_parametro.id_versao, tb_nf_parametro.id_tipo_emissao,  ");
                sb.Append("           tb_nf_parametro.id_tipo_ambiente, tb_nf_parametro.id_forma_impressao, tb_nf_parametro.desc_justificativa, tb_nf_parametro.licenca, ");
                sb.Append(" tb_nf_parametro.nome_certificado, tb_nf_parametro.senha_certificado, tb_nf_parametro.sit_usa_proxy, tb_nf_parametro.usuario_proxy, ");
                sb.Append(" tb_nf_parametro.senha_proxy, tb_nf_parametro.dominio_proxy, tb_nf_parametro.url_proxy, tb_nf_parametro.diretorio_certificado, tb_nf_parametro.diretorio_entrada, ");
                sb.Append(" tb_nf_parametro.diretorio_saida, tb_nf_parametro.diretorio_assinada, tb_nf_parametro.diretorio_validada, tb_nf_parametro.diretorio_rejeitada, ");
                sb.Append(" tb_nf_parametro.diretorio_aprovada, tb_nf_parametro.diretorio_denegada, tb_nf_parametro.diretorio_reprovada, tb_nf_parametro.diretorio_consultada, ");
                sb.Append(" tb_nf_parametro.diretorio_temporario, tb_nf_parametro.diretorio_inutilizada, tb_nf_parametro.diretorio_processando, tb_nf_parametro.diretorio_impressao, tb_nf_parametro.diretorio_cancelada,  ");
                sb.Append(" tb_nf_parametro.sit_ativo, tb_empresa.nome, tb_nf_versao.desc_versao, tb_nf_processo_emissao.desc_processo_emissao,  ");
                sb.Append(" tb_nf_forma_impressao.desc_forma_impressao, tb_nf_ambiente.desc_ambiente, tb_nf_tipo_emissao.desc_tipo_emissao ");
                sb.Append(" FROM         tb_nf_parametro INNER JOIN ");
                sb.Append("           tb_empresa ON tb_nf_parametro.id_empresa = tb_empresa.id INNER JOIN ");
                sb.Append(" tb_nf_processo_emissao ON tb_nf_parametro.id_processo_emissao = tb_nf_processo_emissao.id INNER JOIN ");
                sb.Append(" tb_nf_versao ON tb_nf_parametro.id_versao = tb_nf_versao.id INNER JOIN ");
                sb.Append(" tb_nf_forma_impressao ON tb_nf_parametro.id_forma_impressao = tb_nf_forma_impressao.id INNER JOIN ");
                sb.Append(" tb_nf_ambiente ON tb_nf_parametro.id_tipo_ambiente = tb_nf_ambiente.id INNER JOIN ");
                sb.Append(" tb_nf_tipo_emissao ON tb_nf_parametro.id_tipo_emissao = tb_nf_tipo_emissao.id ");
				sb.Append(" Where tb_nf_parametro.id = @id");
				ds = db.ExecuteQuery(sb.ToString());				
				
				if(!db.DataSetIsEmpty(ds))
				{
					dt = ds.Tables[0];
					
					foreach (DataRow dr in dt.Rows)
                	{
						obj = new OBJ_TB_NF_PARAMETRO();
						Set(obj,dr);																			
					}
					return obj;
					
				}
				else
				{
					return null;	
				}			
			}
			catch (Exception)
       		{
            	throw;
        	}
			
		}

        /// <summary>
        /// Selecionar Objeto Por ID
        /// </summary>	
        public OBJ_TB_NF_PARAMETRO SelecionarObjetoPorIdEmpresa(int id_empresa)
        {
            try
            {
                DAO_DATABASE db = new DAO_DATABASE();
                OBJ_TB_NF_PARAMETRO obj = new OBJ_TB_NF_PARAMETRO();
                DataSet ds = new DataSet();
                DataTable dt = new DataTable();

                db.CreateParameter("@id_empresa", SqlDbType.Int, id_empresa);
                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT     tb_nf_parametro.id, tb_nf_parametro.id_empresa, tb_nf_parametro.id_uf, tb_nf_parametro.id_processo_emissao, tb_nf_parametro.id_versao, tb_nf_parametro.id_tipo_emissao,  ");
                sb.Append("           tb_nf_parametro.id_tipo_ambiente, tb_nf_parametro.id_forma_impressao, tb_nf_parametro.desc_justificativa, tb_nf_parametro.licenca, ");
                sb.Append(" tb_nf_parametro.nome_certificado, tb_nf_parametro.senha_certificado, tb_nf_parametro.sit_usa_proxy, tb_nf_parametro.usuario_proxy, ");
                sb.Append(" tb_nf_parametro.senha_proxy, tb_nf_parametro.dominio_proxy, tb_nf_parametro.url_proxy, tb_nf_parametro.diretorio_certificado, tb_nf_parametro.diretorio_entrada, ");
                sb.Append(" tb_nf_parametro.diretorio_saida, tb_nf_parametro.diretorio_assinada, tb_nf_parametro.diretorio_validada, tb_nf_parametro.diretorio_rejeitada, ");
                sb.Append(" tb_nf_parametro.diretorio_aprovada, tb_nf_parametro.diretorio_denegada, tb_nf_parametro.diretorio_reprovada, tb_nf_parametro.diretorio_consultada, ");
                sb.Append(" tb_nf_parametro.diretorio_temporario, tb_nf_parametro.diretorio_inutilizada, tb_nf_parametro.diretorio_processando, tb_nf_parametro.diretorio_impressao, tb_nf_parametro.diretorio_cancelada,  ");
                sb.Append(" tb_nf_parametro.sit_ativo, tb_empresa.nome, tb_nf_versao.desc_versao, tb_nf_processo_emissao.desc_processo_emissao,  ");
                sb.Append(" tb_nf_forma_impressao.desc_forma_impressao, tb_nf_ambiente.desc_ambiente, tb_nf_tipo_emissao.desc_tipo_emissao ");
                sb.Append(" FROM  tb_nf_parametro INNER JOIN ");
                sb.Append("  tb_empresa ON tb_nf_parametro.id_empresa = tb_empresa.id INNER JOIN ");
                sb.Append(" tb_nf_processo_emissao ON tb_nf_parametro.id_processo_emissao = tb_nf_processo_emissao.id INNER JOIN ");
                sb.Append(" tb_nf_versao ON tb_nf_parametro.id_versao = tb_nf_versao.id INNER JOIN ");
                sb.Append(" tb_nf_forma_impressao ON tb_nf_parametro.id_forma_impressao = tb_nf_forma_impressao.id INNER JOIN ");
                sb.Append(" tb_nf_ambiente ON tb_nf_parametro.id_tipo_ambiente = tb_nf_ambiente.id INNER JOIN ");
                sb.Append(" tb_nf_tipo_emissao ON tb_nf_parametro.id_tipo_emissao = tb_nf_tipo_emissao.id ");
                sb.Append(" Where tb_nf_parametro.id_empresa = @id_empresa");
                ds = db.ExecuteQuery(sb.ToString());

                if (!db.DataSetIsEmpty(ds))
                {
                    dt = ds.Tables[0];

                    foreach (DataRow dr in dt.Rows)
                    {
                        obj = new OBJ_TB_NF_PARAMETRO();
                        Set(obj, dr);
                    }
                    return obj;

                }
                else
                {
                    return null;
                }
            }
            catch (Exception)
            {
                throw;
            }

        }
					
		
		/// <summary>
		/// Lista objeto Parametro Where OrderBy
		/// </summary>							
		public List<OBJ_TB_NF_PARAMETRO> SelecionarLista(String Where, String OrderBy)
    	{
        	try
        	{
				DAO_DATABASE db = new DAO_DATABASE();
				OBJ_TB_NF_PARAMETRO obj = null;
				DataSet ds = new DataSet();
				DataTable dt = new DataTable();
				List<OBJ_TB_NF_PARAMETRO> lista = new List<OBJ_TB_NF_PARAMETRO>();
				
				StringBuilder sb = new StringBuilder();
				db.CreateParameter("@Where",SqlDbType.VarChar, Where );
				db.CreateParameter("@OrderBy", SqlDbType.VarChar, OrderBy );				
				
			    sb.Append(" SELECT     tb_nf_parametro.id, tb_nf_parametro.id_empresa, tb_nf_parametro.id_uf, tb_nf_parametro.id_processo_emissao, tb_nf_parametro.id_versao, tb_nf_parametro.id_tipo_emissao,  ");
                sb.Append("           tb_nf_parametro.id_tipo_ambiente, tb_nf_parametro.id_forma_impressao, tb_nf_parametro.desc_justificativa, tb_nf_parametro.licenca, ");
                sb.Append(" tb_nf_parametro.nome_certificado, tb_nf_parametro.senha_certificado, tb_nf_parametro.sit_usa_proxy, tb_nf_parametro.usuario_proxy, ");
                sb.Append(" tb_nf_parametro.senha_proxy, tb_nf_parametro.dominio_proxy, tb_nf_parametro.url_proxy, tb_nf_parametro.diretorio_certificado, tb_nf_parametro.diretorio_entrada, ");
                sb.Append(" tb_nf_parametro.diretorio_saida, tb_nf_parametro.diretorio_assinada, tb_nf_parametro.diretorio_validada, tb_nf_parametro.diretorio_rejeitada, ");
                sb.Append(" tb_nf_parametro.diretorio_aprovada, tb_nf_parametro.diretorio_denegada, tb_nf_parametro.diretorio_reprovada, tb_nf_parametro.diretorio_consultada, ");
                sb.Append(" tb_nf_parametro.diretorio_temporario, tb_nf_parametro.diretorio_inutilizada, tb_nf_parametro.diretorio_processando, tb_nf_parametro.diretorio_impressao, tb_nf_parametro.diretorio_cancelada,  ");
                sb.Append(" tb_nf_parametro.sit_ativo, tb_empresa.nome, tb_nf_versao.desc_versao, tb_nf_processo_emissao.desc_processo_emissao,  ");
                sb.Append(" tb_nf_forma_impressao.desc_forma_impressao, tb_nf_ambiente.desc_ambiente, tb_nf_tipo_emissao.desc_tipo_emissao ");
                sb.Append(" FROM         tb_nf_parametro INNER JOIN ");
                sb.Append("           tb_empresa ON tb_nf_parametro.id_empresa = tb_empresa.id INNER JOIN ");
                sb.Append(" tb_nf_processo_emissao ON tb_nf_parametro.id_processo_emissao = tb_nf_processo_emissao.id INNER JOIN ");
                sb.Append(" tb_nf_versao ON tb_nf_parametro.id_versao = tb_nf_versao.id INNER JOIN ");
                sb.Append(" tb_nf_forma_impressao ON tb_nf_parametro.id_forma_impressao = tb_nf_forma_impressao.id INNER JOIN ");
                sb.Append(" tb_nf_ambiente ON tb_nf_parametro.id_tipo_ambiente = tb_nf_ambiente.id INNER JOIN ");
                sb.Append(" tb_nf_tipo_emissao ON tb_nf_parametro.id_tipo_emissao = tb_nf_tipo_emissao.id ");

				if(Where != string.Empty)				
				sb.Append(string.Format(" Where {0} ",Where));
				if(OrderBy != string.Empty)
				sb.Append(string.Format(" Order by {0}",OrderBy));
				
				ds = db.ExecuteQuery(sb.ToString());
				
				if(!db.DataSetIsEmpty(ds))
				{
					dt = ds.Tables[0];
					foreach (DataRow dr in dt.Rows)
					{						
						obj = new OBJ_TB_NF_PARAMETRO();
						Set(obj,dr);			
						lista.Add(obj);
					}
				}
				return lista;
        	}
        	catch (Exception)
       		{
            	throw;
        	}

    	}

		
		public DataSet Selecionar(String Where, String OrderBy, int PageIndex, int PageSize )
		{
				DAO_DATABASE db = new DAO_DATABASE();
				DataSet ds = new DataSet();
				
				StringBuilder sb = new StringBuilder();
				
				PageIndex = PageSize * PageIndex;
            	PageSize =  PageIndex + PageSize;
				
		      	if (OrderBy == string.Empty) OrderBy = "tb_nf_parametro.id";

            	sb.Append("SELECT * FROM ");
            	sb.Append(string.Format(" (SELECT ROW_NUMBER() OVER (ORDER BY {0}) AS RowNumber,",OrderBy));
           	    sb.Append(" tb_nf_parametro.id, tb_nf_parametro.id_empresa, tb_nf_parametro.id_uf, tb_nf_parametro.id_processo_emissao, tb_nf_parametro.id_versao, tb_nf_parametro.id_tipo_emissao,  ");
                sb.Append("           tb_nf_parametro.id_tipo_ambiente, tb_nf_parametro.id_forma_impressao, tb_nf_parametro.desc_justificativa, tb_nf_parametro.licenca, ");
                sb.Append(" tb_nf_parametro.nome_certificado, tb_nf_parametro.senha_certificado, tb_nf_parametro.sit_usa_proxy, tb_nf_parametro.usuario_proxy, ");
                sb.Append(" tb_nf_parametro.senha_proxy, tb_nf_parametro.dominio_proxy, tb_nf_parametro.url_proxy, tb_nf_parametro.diretorio_certificado, tb_nf_parametro.diretorio_entrada, ");
                sb.Append(" tb_nf_parametro.diretorio_saida, tb_nf_parametro.diretorio_assinada, tb_nf_parametro.diretorio_validada, tb_nf_parametro.diretorio_rejeitada, ");
                sb.Append(" tb_nf_parametro.diretorio_aprovada, tb_nf_parametro.diretorio_denegada, tb_nf_parametro.diretorio_reprovada, tb_nf_parametro.diretorio_consultada, ");
                sb.Append(" tb_nf_parametro.diretorio_temporario, tb_nf_parametro.diretorio_inutilizada, tb_nf_parametro.diretorio_processando, tb_nf_parametro.diretorio_impressao, tb_nf_parametro.diretorio_cancelada,  ");
                sb.Append(" tb_nf_parametro.sit_ativo, tb_empresa.nome, tb_nf_versao.desc_versao, tb_nf_processo_emissao.desc_processo_emissao,  ");
                sb.Append(" tb_nf_forma_impressao.desc_forma_impressao, tb_nf_ambiente.desc_ambiente, tb_nf_tipo_emissao.desc_tipo_emissao ");
                sb.Append(" FROM         tb_nf_parametro INNER JOIN ");
                sb.Append("           tb_empresa ON tb_nf_parametro.id_empresa = tb_empresa.id INNER JOIN ");
                sb.Append(" tb_nf_processo_emissao ON tb_nf_parametro.id_processo_emissao = tb_nf_processo_emissao.id INNER JOIN ");
                sb.Append(" tb_nf_versao ON tb_nf_parametro.id_versao = tb_nf_versao.id INNER JOIN ");
                sb.Append(" tb_nf_forma_impressao ON tb_nf_parametro.id_forma_impressao = tb_nf_forma_impressao.id INNER JOIN ");
                sb.Append(" tb_nf_ambiente ON tb_nf_parametro.id_tipo_ambiente = tb_nf_ambiente.id INNER JOIN ");
                sb.Append(" tb_nf_tipo_emissao ON tb_nf_parametro.id_tipo_emissao = tb_nf_tipo_emissao.id ");

				if (Where != string.Empty)
				{
					sb.Append(string.Format(" WHERE {0}", Where));
				}
				sb.Append(" ) query  ");
				sb.Append(string.Format(" WHERE RowNumber BETWEEN {0} + 1 and {1}; ",PageIndex,PageSize));

            	sb.Append("SELECT count(*) FROM tb_nf_parametro");
				if (Where != string.Empty)
				{
					sb.Append(string.Format(" WHERE {0}", Where));
				}
				ds = db.ExecuteQuery(sb.ToString());
				
				if (!db.DataSetIsEmpty(ds))
            	{
                publico.PUB_PAGINACAO.CalcularTotalDePaginas(Convert.ToDecimal(ds.Tables[1].Rows[0][0].ToString()));
            	}

				
            	return ds;
								
		}
				
								
		public DataSet Selecionar(String Where, String OrderBy)
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();

                       sb.Append(" SELECT     tb_nf_parametro.id, tb_nf_parametro.id_empresa, tb_nf_parametro.id_uf, tb_nf_parametro.id_processo_emissao, tb_nf_parametro.id_versao, tb_nf_parametro.id_tipo_emissao,  ");
            sb.Append("           tb_nf_parametro.id_tipo_ambiente, tb_nf_parametro.id_forma_impressao, tb_nf_parametro.desc_justificativa, tb_nf_parametro.licenca, ");
            sb.Append(" tb_nf_parametro.nome_certificado, tb_nf_parametro.senha_certificado, tb_nf_parametro.sit_usa_proxy, tb_nf_parametro.usuario_proxy, ");
            sb.Append(" tb_nf_parametro.senha_proxy, tb_nf_parametro.dominio_proxy, tb_nf_parametro.url_proxy, tb_nf_parametro.diretorio_certificado, tb_nf_parametro.diretorio_entrada, ");
            sb.Append(" tb_nf_parametro.diretorio_saida, tb_nf_parametro.diretorio_assinada, tb_nf_parametro.diretorio_validada, tb_nf_parametro.diretorio_rejeitada, ");
            sb.Append(" tb_nf_parametro.diretorio_aprovada, tb_nf_parametro.diretorio_denegada, tb_nf_parametro.diretorio_reprovada, tb_nf_parametro.diretorio_consultada, ");
            sb.Append(" tb_nf_parametro.diretorio_temporario, tb_nf_parametro.diretorio_inutilizada, tb_nf_parametro.diretorio_processando, tb_nf_parametro.diretorio_impressao, tb_nf_parametro.diretorio_cancelada,  ");
            sb.Append(" tb_nf_parametro.sit_ativo, tb_empresa.nome, tb_nf_versao.desc_versao, tb_nf_processo_emissao.desc_processo_emissao,  ");
            sb.Append(" tb_nf_forma_impressao.desc_forma_impressao, tb_nf_ambiente.desc_ambiente, tb_nf_tipo_emissao.desc_tipo_emissao ");
            sb.Append(" FROM         tb_nf_parametro INNER JOIN ");
            sb.Append("           tb_empresa ON tb_nf_parametro.id_empresa = tb_empresa.id INNER JOIN ");
            sb.Append(" tb_nf_processo_emissao ON tb_nf_parametro.id_processo_emissao = tb_nf_processo_emissao.id INNER JOIN ");
            sb.Append(" tb_nf_versao ON tb_nf_parametro.id_versao = tb_nf_versao.id INNER JOIN ");
            sb.Append(" tb_nf_forma_impressao ON tb_nf_parametro.id_forma_impressao = tb_nf_forma_impressao.id INNER JOIN ");
            sb.Append(" tb_nf_ambiente ON tb_nf_parametro.id_tipo_ambiente = tb_nf_ambiente.id INNER JOIN ");
            sb.Append(" tb_nf_tipo_emissao ON tb_nf_parametro.id_tipo_emissao = tb_nf_tipo_emissao.id ");

           if (Where != string.Empty)
            {
                db.CreateParameter("@Where", SqlDbType.VarChar, Where);
                sb.Append(string.Format(" Where  {0}",Where));
            }

            if (OrderBy != string.Empty)
            {
                db.CreateParameter("@OrderBy", SqlDbType.VarChar, OrderBy);
                sb.Append(string.Format(" Order By {0}", OrderBy));
            }

            ds = db.ExecuteQuery(sb.ToString());
            return ds;
        }		
		
		public DataSet Selecionar()
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();

            sb.Append(" SELECT     tb_nf_parametro.id, tb_nf_parametro.id_empresa, tb_nf_parametro.id_uf, tb_nf_parametro.id_processo_emissao, tb_nf_parametro.id_versao, tb_nf_parametro.id_tipo_emissao,  ");
            sb.Append("           tb_nf_parametro.id_tipo_ambiente, tb_nf_parametro.id_forma_impressao, tb_nf_parametro.desc_justificativa, tb_nf_parametro.licenca, ");
            sb.Append(" tb_nf_parametro.nome_certificado, tb_nf_parametro.senha_certificado, tb_nf_parametro.sit_usa_proxy, tb_nf_parametro.usuario_proxy, ");
            sb.Append(" tb_nf_parametro.senha_proxy, tb_nf_parametro.dominio_proxy, tb_nf_parametro.url_proxy, tb_nf_parametro.diretorio_certificado, tb_nf_parametro.diretorio_entrada, ");
            sb.Append(" tb_nf_parametro.diretorio_saida, tb_nf_parametro.diretorio_assinada, tb_nf_parametro.diretorio_validada, tb_nf_parametro.diretorio_rejeitada, ");
            sb.Append(" tb_nf_parametro.diretorio_aprovada, tb_nf_parametro.diretorio_denegada, tb_nf_parametro.diretorio_reprovada, tb_nf_parametro.diretorio_consultada, ");
            sb.Append(" tb_nf_parametro.diretorio_temporario, tb_nf_parametro.diretorio_inutilizada, tb_nf_parametro.diretorio_processando, tb_nf_parametro.diretorio_impressao, tb_nf_parametro.diretorio_cancelada,  ");
            sb.Append(" tb_nf_parametro.sit_ativo, tb_empresa.nome, tb_nf_versao.desc_versao, tb_nf_processo_emissao.desc_processo_emissao,  ");
            sb.Append(" tb_nf_forma_impressao.desc_forma_impressao, tb_nf_ambiente.desc_ambiente, tb_nf_tipo_emissao.desc_tipo_emissao ");
            sb.Append(" FROM         tb_nf_parametro INNER JOIN ");
            sb.Append("           tb_empresa ON tb_nf_parametro.id_empresa = tb_empresa.id INNER JOIN ");
            sb.Append(" tb_nf_processo_emissao ON tb_nf_parametro.id_processo_emissao = tb_nf_processo_emissao.id INNER JOIN ");
            sb.Append(" tb_nf_versao ON tb_nf_parametro.id_versao = tb_nf_versao.id INNER JOIN ");
            sb.Append(" tb_nf_forma_impressao ON tb_nf_parametro.id_forma_impressao = tb_nf_forma_impressao.id INNER JOIN ");
            sb.Append(" tb_nf_ambiente ON tb_nf_parametro.id_tipo_ambiente = tb_nf_ambiente.id INNER JOIN ");
            sb.Append(" tb_nf_tipo_emissao ON tb_nf_parametro.id_tipo_emissao = tb_nf_tipo_emissao.id ");


            sb.Append("Select * from  TB_NF_PARAMETRO Order By id");            
            ds = db.ExecuteQuery(sb.ToString());
            return ds;
        }		
		
		
		public DataSet ListaCampos()
        {

            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
            sb.Append("SELECT TABLE_NAME, ORDINAL_POSITION, ");
            sb.Append(" COLUMN_NAME, DATA_TYPE, IS_NULLABLE ");
            sb.Append(" FROM INFORMATION_SCHEMA.COLUMNS");
            sb.Append(" WHERE TABLE_NAME = 'tb_nf_parametro'");
            ds = db.ExecuteQuery(sb.ToString());

            return ds;

        }

		public DataSet DropdownList()
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
			sb.Append("SELECT ");
			sb.Append(" id ");
				sb.Append(", id_empresa ");  				
				sb.Append(", id_processo_emissao ");  				
				sb.Append(", id_versao ");  				
			sb.Append(" FROM tb_nf_parametro ");           
			sb.Append(" ORDER BY id_empresa ");
            ds = db.ExecuteQuery(sb.ToString());

            // ds = db.ExecuteProcedure("USP_TB_NF_PARAMETRO_DROPDOWNLIST");  
            return ds;
        }

        public DataSet DropdownList(String Where)
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
            db.CreateParameter("@Where", SqlDbType.VarChar, Where);
			sb.Append("SELECT ");
			sb.Append(" id ");
			
			
			sb.Append(", id_empresa ");  				
			
			
			sb.Append(", id_processo_emissao ");  				
			
			
			sb.Append(", id_versao ");  				
			sb.Append(" FROM tb_nf_parametro ");
			sb.Append(string.Format(" WHERE {0} ",Where));
			sb.Append(" ORDER BY id_empresa ");
            ds = db.ExecuteQuery(sb.ToString());

            // ds = db.ExecuteProcedure("USP_TB_NF_PARAMETRO_DROPDOWNLIST");
            return ds;
        }
		
		  public DataSet DropdownList(String Where, String OrderBy)
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
            db.CreateParameter("@Where", SqlDbType.VarChar, Where);
			sb.Append("SELECT ");
			sb.Append(" id ");
			sb.Append(", id_empresa ");  				
			sb.Append(", id_processo_emissao ");  				
			sb.Append(", id_versao ");  				
			sb.Append(" FROM tb_nf_parametro ");
			sb.Append(string.Format(" WHERE {0} ORDER BY {1}",Where,OrderBy));			
            ds = db.ExecuteQuery(sb.ToString());

            // ds = db.ExecuteProcedure("USP_TB_NF_PARAMETRO_DROPDOWNLIST");
            return ds;
        }

	}
	#endregion
}

